// 尝试从多个路径加载.env文件
const path = require('path');
const fs = require('fs');

// 获取执行文件所在目录
const execDir = path.dirname(process.execPath);
const currentDir = process.cwd();

// 尝试加载.env文件的路径列表
const envPaths = [
  path.join(currentDir, '.env'),
  path.join(execDir, '.env'),
  path.join(__dirname, '.env'),
  '.env'
];

let envLoaded = false;
for (const envPath of envPaths) {
  if (fs.existsSync(envPath)) {
    require('dotenv').config({ path: envPath });
    console.log(`📁 已加载配置文件: ${envPath}`);
    envLoaded = true;
    break;
  }
}

if (!envLoaded) {
  console.warn('⚠️  未找到.env配置文件，创建默认配置...');
  
  // 创建默认的.env文件内容
  const defaultEnvContent = `# Pointcloud Cache Proxy Configuration
# 复制此文件为 .env 并修改相应配置

# 目标服务器地址
TARGET_SERVER=https://static.arcsoft.com.cn

# 服务端口
PORT=9001

# 缓存目录
CACHE_DIR=./cache

# 缓存最大大小
CACHE_MAX_SIZE=10GB

# 缓存有效期（毫秒）
CACHE_TTL=86400000

# 是否启用日志
LOGGING=true

# 是否启用频率限制
RATE_LIMITING=true

# 最大并发请求数
MAX_CONCURRENT_REQUESTS=3

# 队列超时时间（毫秒）
QUEUE_TIMEOUT=10000
`;

  // 尝试创建.env文件
  try {
    const envPath = path.join(currentDir, '.env');
    fs.writeFileSync(envPath, defaultEnvContent);
    console.log('✅ 已创建默认配置文件: .env');
    
    // 重新加载配置
    require('dotenv').config({ path: envPath });
    console.log('📁 已加载默认配置');
  } catch (error) {
    console.warn('⚠️  无法创建.env文件，使用内存中的默认配置');
    // 设置默认环境变量
    process.env.TARGET_SERVER = 'https://static.arcsoft.com.cn';
    process.env.PORT = '9001';
    process.env.CACHE_DIR = './cache';
    process.env.CACHE_MAX_SIZE = '10GB';
    process.env.CACHE_TTL = '86400000';
    process.env.LOGGING = 'true';
    process.env.RATE_LIMITING = 'true';
    process.env.MAX_CONCURRENT_REQUESTS = '3';
    process.env.QUEUE_TIMEOUT = '10000';
  }
  
  console.log('🎯 使用默认目标服务器: https://static.arcsoft.com.cn');
}

/**
 * 精简的点云缓存代理配置
 */
const config = {
  // 服务器配置
  server: {
    port: parseInt(process.env.PORT) || 9001,
    targetServer: process.env.TARGET_SERVER || null
  },

  // 缓存配置
  cache: {
    dir: process.env.CACHE_DIR || './cache',
    maxSize: process.env.CACHE_MAX_SIZE || '10GB',
    ttl: parseInt(process.env.CACHE_TTL) || 24 * 60 * 60 * 1000, // 24小时
    pathPattern: '', // 空字符串匹配所有URL
    periodicCleanup: false // 禁用定时清理，仅在超出限制时使用LRU清理
  },

  // 日志配置
  logging: {
    enabled: process.env.LOGGING !== 'false'
  },

  // 基本频率限制
  rateLimiting: {
    enabled: process.env.RATE_LIMITING !== 'false',
    maxConcurrentRequests: parseInt(process.env.MAX_CONCURRENT_REQUESTS) || 3,
    queueTimeout: parseInt(process.env.QUEUE_TIMEOUT) || 10000 // 10秒
  }
};

// 验证必需配置
if (!config.server.targetServer) {
  console.warn('⚠️  警告: 未配置目标服务器地址，请设置 TARGET_SERVER 环境变量');
}

module.exports = config;